package com.example.review;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import com.example.review.SQLite.MyDatabaseHelper;

public class chapterSix4Activity extends AppCompatActivity {
    private MyDatabaseHelper myDatabaseHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chapter_six4);
        //四个参数分别为 上下文，数据库名，null， 版本号
        myDatabaseHelper=new MyDatabaseHelper(this,"BookStore",null,2);
        Button button=findViewById(R.id.create_table);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //创建或打开一个现有的数据库（如果数据库 已存在则直接打开，否则创建一个新的数据库），并返回一个可对数据库进行读写操作的对 象
                SQLiteDatabase sqLiteDatabase = myDatabaseHelper.getReadableDatabase();
            }
        });

        /**
         * 添加数据
         */
        Button button1=findViewById(R.id.add_datas);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase sqLiteDatabase = myDatabaseHelper.getReadableDatabase();
                ContentValues values=new ContentValues();
                // 开始组装第一条数据
                values.put("name", "The Da Vinci Code");
                values.put("author", "Dan Brown");
                values.put("pages", 454);
                values.put("price", 16.96);
                //三个参数 分别是 表名、 第一个一般为null、组装的数据
                sqLiteDatabase.insert("Book",null,values);// 插入第一条数据


                values.clear();
                // 开始组装第二条数据
                values.put("name", "The Lost Symbol");
                values.put("author", "Dan Brown");
                values.put("pages", 510);
                values.put("price", 19.95);
                sqLiteDatabase.insert("Book", null, values); // 插入第二条数据
            }
        });

        /**
         * 修改数据
         */
        Button button2=findViewById(R.id.update_datas);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase sqLiteDatabase = myDatabaseHelper.getReadableDatabase();
                ContentValues values=new ContentValues();
                values.put("author", "lqm");
                //三四个参数为限定条件  不指定的话默认就是更新所有行。
                sqLiteDatabase.update("Book", values, "name = ?", new String[] { "The Da Vinci Code" });
            }
        });

        /**
         * 删除数据
         */
        Button button3=findViewById(R.id.delete_datas);
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase sqLiteDatabase = myDatabaseHelper.getReadableDatabase();
                sqLiteDatabase.delete("Book", "pages > ?", new String[] { "500" });
            }
        });

        /**
         * 查询数据
         */
        Button button4=findViewById(R.id.query_datas);
        button4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase sqLiteDatabase = myDatabaseHelper.getReadableDatabase();
                // 查询Book表中所有的数据
                //返回一个Cursor对象
                Cursor cursor = sqLiteDatabase.query("Book", null, null, null, null, null, null);
               //将数据的指 针移动到第一行的位置
                if (cursor.moveToFirst()) {
                    do {
                        // 遍历Cursor对象，取出数据并打印      cursor.getColumnIndex获取到某一列在表中对应的位置索引，然后将 这个索引传入到相应的取值方法中，就可以得到从数据库中读取到的数据
                        @SuppressLint("Range") String name = cursor.getString(cursor.getColumnIndex ("name"));
                        @SuppressLint("Range") String author = cursor.getString(cursor.getColumnIndex ("author"));
                        @SuppressLint("Range") int pages = cursor.getInt(cursor.getColumnIndex("pages"));
                        @SuppressLint("Range") double price = cursor.getDouble(cursor.getColumnIndex ("price"));
                        Log.d("MainActivity", "book name is " + name);
                        Log.d("MainActivity", "book author is " + author);
                        Log.d("MainActivity", "book pages is " + pages);
                        Log.d("MainActivity", "book price is " + price);
                    }
                    while (cursor.moveToNext());
                }
                cursor.close();
            }


        });
    }
}